package com.iacrqq.sedaf.queue;

import java.util.List;

import com.iacrqq.sedaf.queue.exception.QueueFullException;

/**
 * 
 * @author sihai
 *
 */
public interface Output<T> {
	
	/**
	 * 
	 * @param element
	 * @throws QueueFullException
	 */
	void enqueue(T element) throws QueueFullException;
	
	/**
	 * Given an list of elements, atomically enqueues all of the elements
	 * in the list. This guarantees that no other thread can interleave its
	 * own elements with those being inserted from this list. The 
	 * implementation must enqueue all of the elements or none of them;
	 * @param eventList
	 */
	void enqueue(List<T> elementList) throws QueueFullException;

}
